<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <!-- 翻转二叉树以匹配先序遍历 -->
    <script>
      var flipMatchVoyage = function (root, voyage) {
        let ans = []
        let i = 0
        function dfs(node) {
          if (!node) return true
          let val = voyage[i++]
          // 判断当前节点的值是否和先序顺序一样
          if (val !== node.val) return false
          // 左子节点的值和先序的值不相同，说明需要进行反转
          if (node.left && node.left.val !== voyage[i]) {
            // 记录反转点
            ans.push(val)
            // 模拟反转
            return dfs(node.right) && dfs(node.left)
          } else {
            // 无反转
            return dfs(node.left) && dfs(node.right)
          }
        }
        // 返回结果为false的话，说明不匹配，返回[-1]
        return dfs(root) ? ans : [-1]
      }
      console.log(flipMatchVoyage([1, 2], [2, 1]))
    </script>
  </body>
</html>
